home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs54.d81
/
sgtool13.arc
/
SGCTOOLS.DOC
< prev
next >
Wrap
Text File
|
1993-08-28
|
8KB
|
212 lines
___________________________________________________________________
SG C Tools 1.3
(C) 1993 Steve Goldsmith
All Rights Reserved
___________________________________________________________________
NOTICE
THIS IS NOT FREE SOFTWARE! If you paid a public domain vendor or
communications service for this product, you paid for the service
of copying or transferring the product, and not for the product
itself. I guarantee you that nothing ever gets to the originator
of this product from such a sale. You may evaluate this product,
but if you make use of it, you must register your copy.
I offer several incentives for you to register. First of all,
you receive the most up-to-date copy that I have which is updated
on a regular basis. Unregistered releases do not include Assembler
source files or bonus modules and programs. Support via GEnie,
Internet (via GEnie), US Mail or phone from the author.
REGISTRATION INFORMATION
The non-commercial registration fee for SG C Tools 1.3 is $10.00
plus $3.00 for shipping in US funds.
Send a check or money order for the appropriate amount to:
Steve Goldsmith
2805 Jamaica Street
Sarasota, FL 34231
Please indicate what product you are ordering and if you have a
requirement for 3.5" media. I normally ship 5.25" Commodore GCR
format diskettes, but will furnish 3.5" media upon request.
Customers outside of the United States and Canada should include an
extra $5.00 for airmail.
If you are a registered user of this product and desire an update,
please contact me for upgrade prices.
DISTRIBUTION NOTICE
This is "user-supported" software. You are hereby granted a
license by Steve Goldsmith to distribute this evaluation copy of SG
C Tools and its documentation, subject to the following conditions:
1. SG C Tools may be distributed freely without charge in
evaluation form only.
2. SG C Tools may not be sold, licensed, or a fee charged for its
use. If a fee is charged in connection with SG C Tools, it
must cover the cost of copying or dissemination only. Such
charges must be clearly identified as such by the originating
party. Under no circumstances may the purchaser be given the
impression that he is buying SG C Tools itself.
3. SG C Tools must be presented as a complete unit, including
this documentation. Neither SG C Tools nor its documentation
may be amended or altered in any way.
4. By granting you the right to distribute the evaluation form of
SG C Tools, you do not become the owner of SG C Tools in any
form. Any other use, distribution or representation of SG C
Tools is expressly forbidden without the written consent of
Steve Goldsmith.
Commodore 128 is a trademark of Commodore Business Machines. CP/M
and CP/M 3.0 are trademarks of Digital Research. MS-DOS and
Windows are trademarks of Microsoft. IBM PC, PC-XT and PC-AT are
trademarks of International Business Machines.
OVERVIEW
SG C Tools ANSI C library unlocks the power of a C128 running CP/M!
High level and low level functions are included to access the VDC,
SID and CIA. All source code is compatible with the Freeware
version of Hi Tech C. A demo is included to show you how to use
most features.
REQUIREMENTS
A C128 or C128D running CP/M 3.0 or a IBM PC running a CP/M
emulator and DOS to CP/M file transfer software.
At least one 1581, two 1571s, large RAM disk or hard drive to
compile on a C128.
80 column monitor for VDC specific routines.
ANSI C programming experience.
MODIFICATIONS IN VERSION 1.3
vdcCharMem is initialized to the default value of 0x2000 because
reading VDC register 28 will only return the values 0x2000, 0x6000,
0xA000 and 0xE000. Your application must keep track of vdcCharMem
since vdcmap() no longer updates this value.
Added SID functions to clear all registers, set master volume,
envelope, frequency, filters, pulse width, execute ADSR cycle, read
pots and 1351 compatible mouse.
Added CIA functions to set/read time of day clocks, convert TOD
clock BCD values to ASCII string, set/read timers A and B, convert
Hz to timer latch value, set interrupt control, low level keyboard
and joy stick scanning.
circlevdc() doesn't draw true circles due to the aspect ratio of
640 X 200 bit map mode. I did some correction by reducing Y axis
plots by 50%. A general ellipse algorithm would be better. It
involves a new formula in terms of the P parameter (see VDCCIR.C).
If you come up with one I'll give you a free registered copy! I
really need to get some graphics books instead of hacking this
stuff!
COMPILING SOURCE CODE WITH HI-TECH C 3.09
First you will need to have a copy of HI-TECH C 3.09 (CP/M-80).
You can download the following Freeware files from GEnie's CP/M RT
(M685;3) or other source:
8149 LIBSRC.LZH X BRIAN-CPM 930616 80384 39
3
Desc: Source Code to Hitech C library
8148 Z80V309.LZH X BRIAN-CPM 930616 194304 51
3
Desc: Hitech C Compiler for CP/M
8147 Z80DOC.LZH X BRIAN-CPM 930616 89088 55
3
Desc: Documentation for Hitech C compiler
You should look over HI-TECH C's manual and compile a simple "hello
world" program before proceeding. I installed all the compiler
related files on my 1581. My source and header files are on a
1571. You could get away with two 1571s, but a RAM disk or hard
drive would be better. You could also use a CP/M-80 emulator on
the IBM PC and copy compiled files to C128 for testing.
To compile sample programs use:
C -O -X FILENAME.C -LC128
PROGRAMMING CONSIDERATIONS
The VDC should be configured to its default CP/M 3.0 settings at
the start and end of each program.
Display memory 0000h
Attribute memory 0800h
Character definitions 2000h
This includes restoring character definitions if you use memory at
2000h for something else like a bit map. Setting the VDC to 64K
mode wipes out memory used in 16K mode, so be sure to save the
character definitions to a memory buffer or file before using 64K
mode. The VDC remains in 64K mode until you do a cold boot or warm
boot with the C128's reset button.
Most of the VDC functions do not check parameters for range
violations. Range checking should be preformed at the application
level. There are times when you may want to write to a off screen
memory location. For this reason there is no need to waste time
and code doing range checks. Just be aware of the implications.
A renegade program may accidentally wipe out character definitions
or other important memory regions forcing you to reboot.
Basically, just return to CP/M the way it was before your program
ran. See DEMO.C for a complete example of setting various VDC
modes and exiting back to CP/M correctly.
CP/M relies on the CIAs for communication to the outside world just
like in native 64/128 modes. With this in mind it is best not to
change certain registers. I have found it safe to use CIA #2's TOD
clock, timers A and B and disable all interrupt sources. You can
also safely read the keyboard and joy sticks via CIA #1 if you
disable interrupts. My low level key scan function reads all key
positions into an array of 11 bytes. See page 642 of the Commodore
128 Programmer's Reference for the key positions in the matrix.
You can tell joy stick signals from a key short because the joy
stick shorts a whole row in the matrix instead of one bit like a
key press. See page 32 of the 1351 Mouse User's manual for more
info.
CP/M only uses voice 1 of the SID to produce a key click. You can
use the SID just as you would in native 128 mode with one
exception. Since CP/M writes to the SID during key presses it may
affect a sound in progress. You can disable interrupts to
eliminate this problem.
HOW TO CONTACT ME
Please report any support questions, problems, suggestions, etc. to
me via GEnie S.GOLDSMITH2, Internet S.GOLDSMITH2@GENIE.GEIS.COM,
voice phone (813) 925-1064 or US Mail to:
Steve Goldsmith
2805 Jamaica Street
Sarasota, FL 34231
USA